Remove root coords from the GdkDrop api
authorMatthias Clasen <mclasen@redhat.com>
Fri, 14 Feb 2020 23:15:38 +0000 (18:15 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 21 Feb 2020 05:39:41 +0000 (00:39 -0500)
gdk/gdkdrop.c
gdk/gdkdropprivate.h
gdk/x11/gdkdrop-x11.c

index d4605aa8da01c60bd1da1b3924f0b7877b609751..2f27bccfd548920968539fefd3d87a5c82e7774f 100644 (file)
@@ -983,26 +983,21 @@ gdk_drop_emit_enter_event (GdkDrop  *self,
 void
 gdk_drop_emit_motion_event (GdkDrop  *self,
                             gboolean  dont_queue,
-                            double    x_root,
-                            double    y_root,
+                            double    x,
+                            double    y,
                             guint32   time)
 {
   GdkDropPrivate *priv = gdk_drop_get_instance_private (self);
   GdkEvent *event;
-  int x, y;
 
   g_warn_if_fail (priv->entered);
 
-  gdk_surface_get_origin (priv->surface, &x, &y);
-
   event = gdk_event_new (GDK_DRAG_MOTION);
   event->any.surface = g_object_ref (priv->surface);
   event->dnd.drop = g_object_ref (self);
   event->dnd.time = time;
-  event->dnd.x_root = x_root;
-  event->dnd.y_root = y_root;
-  event->dnd.x = x_root - x;
-  event->dnd.y = y_root - y;
+  event->dnd.x = x;
+  event->dnd.y = y;
   gdk_event_set_device (event, priv->device);
 
   gdk_drop_do_emit_event (event, dont_queue);
@@ -1032,27 +1027,22 @@ gdk_drop_emit_leave_event (GdkDrop  *self,
 void
 gdk_drop_emit_drop_event (GdkDrop  *self,
                           gboolean  dont_queue,
-                          double    x_root,
-                          double    y_root,
+                          double    x,
+                          double    y,
                           guint32   time)
 {
   GdkDropPrivate *priv = gdk_drop_get_instance_private (self);
   GdkEvent *event;
-  int x, y;
 
   g_warn_if_fail (priv->entered);
   g_warn_if_fail (priv->state == GDK_DROP_STATE_NONE);
 
-  gdk_surface_get_origin (priv->surface, &x, &y);
-
   event = gdk_event_new (GDK_DROP_START);
   event->any.surface = g_object_ref (priv->surface);
   event->dnd.drop = g_object_ref (self);
   event->dnd.time = time;
-  event->dnd.x_root = x_root;
-  event->dnd.y_root = y_root;
-  event->dnd.x = x_root - x;
-  event->dnd.y = y_root - y;
+  event->dnd.x = x;
+  event->dnd.y = y;
   gdk_event_set_device (event, priv->device);
 
   priv->state = GDK_DROP_STATE_DROPPING;
index b20eee2ae7193649e8b14c07efb64058e522e9a9..5836c89b78edc3d8769fd25d1484ec3e6b4fb840 100644 (file)
@@ -64,16 +64,16 @@ void                    gdk_drop_emit_enter_event               (GdkDrop
                                                                  guint32                 time);
 void                    gdk_drop_emit_motion_event              (GdkDrop                *self,
                                                                  gboolean                dont_queue,
-                                                                 double                  x_root,
-                                                                 double                  y_root,
+                                                                 double                  x,
+                                                                 double                  y,
                                                                  guint32                 time);
 void                    gdk_drop_emit_leave_event               (GdkDrop                *self,
                                                                  gboolean                dont_queue,
                                                                  guint32                 time);
 void                    gdk_drop_emit_drop_event                (GdkDrop                *self,
                                                                  gboolean                dont_queue,
-                                                                 double                  x_root,
-                                                                 double                  y_root,
+                                                                 double                  x,
+                                                                 double                  y,
                                                                  guint32                 time);
 
 G_END_DECLS
index 07e5a8fc8936eb943a1599f1e734f24c26dafb08..4eb24d154f2562199e3e4b015ff1e75dfc539904 100644 (file)
@@ -647,7 +647,8 @@ xdnd_position_filter (GdkSurface   *surface,
   if ((drop != NULL) &&
       (drop_x11->source_window == source_window))
     {
-      impl = GDK_X11_SURFACE (gdk_drop_get_surface (drop));
+      surface = gdk_drop_get_surface (drop);
+      impl = GDK_X11_SURFACE (surface);
 
       drop_x11->suggested_action = xdnd_action_from_atom (display, action);
       gdk_x11_drop_update_actions (drop_x11);
@@ -655,7 +656,7 @@ xdnd_position_filter (GdkSurface   *surface,
       drop_x11->last_x = x_root / impl->surface_scale;
       drop_x11->last_y = y_root / impl->surface_scale;
 
-      gdk_drop_emit_motion_event (drop, FALSE, drop_x11->last_x, drop_x11->last_y, time);
+      gdk_drop_emit_motion_event (drop, FALSE, drop_x11->last_x - surface->x, drop_x11->last_y - surface->y, time);
     }
 
   return TRUE;
@@ -687,9 +688,10 @@ xdnd_drop_filter (GdkSurface   *surface,
   if ((drop != NULL) &&
       (drop_x11->source_window == source_window))
     {
-      gdk_x11_surface_set_user_time (gdk_drop_get_surface (drop), time);
+      GdkSurface *s = gdk_drop_get_surface (drop);
+      gdk_x11_surface_set_user_time (s, time);
 
-      gdk_drop_emit_drop_event (drop, FALSE, drop_x11->last_x, drop_x11->last_y, time);
+      gdk_drop_emit_drop_event (drop, FALSE, drop_x11->last_x - s->x, drop_x11->last_y - s->y, time);
     }
 
   return TRUE;